/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.beautycenter.Funcionalidades;

import br.com.beautycenter.view.AgendaTratamentos;
import com.toedter.calendar.JDateChooser;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;

/**
 *
 * @author magelinha
 */
public class Swing {
    /**
     * Pega todos os campos texto e os limpas. Os campos JComboBox ficam com o primeiro item selecionado
     * @param componentes 
     */
    public static void zerarCampos(Component[] componentes){
        for(Component item: componentes){
            if(item instanceof JTextField){
                //zera os campos TextField
                JTextField aux = (JTextField)item;
                aux.setText("");
            }else if(item instanceof JFormattedTextField){
                //zera os campos FormattedTextField
                JFormattedTextField aux = (JFormattedTextField)item;
                aux.setValue("");
            }else if(item instanceof JComboBox){
                //deixa os combos no primeiro
                JComboBox aux = (JComboBox)item;
                if(aux.getItemCount() > 0) aux.setSelectedIndex(0);
            }else if(item instanceof JDateChooser){
                JDateChooser aux = (JDateChooser)item;
                aux.setDate(new Date());
            }else if(item instanceof JLabel){
                JLabel aux = (JLabel) item;
                aux = new JLabel("");
            }
    }}
    
    /**
     * Trava todo um painel
     * @param componentes 
     */
    public static void desativarCampos(Component[] componentes){
        for(Component item: componentes){
            item.setEnabled(false);
        }
    }
    
    /**
     * Destrava todo um painel
     * @param componentes 
     */
    public static void ativarCampos(Component[] componentes){
        for(Component item: componentes){
            item.setEnabled(true);
        }
    }
    
    /**
     * Pega todos os botões que estão eu conjunto de componentes e seta o tamanho passado como parâmetro.
     * @param largura
     * @param altura
     * @param painel 
     */
    public static void tamanhoDoBotao(int largura, int altura, Component[] componentes){
        for(Component item: componentes){
            if(item instanceof JButton){
                JButton aux = (JButton) item;
                aux.setPreferredSize(new Dimension(largura, altura));
            }
        }
    }
    
    /**
     * Limpar os dados contidos no campo formatado. Se for um campo numérico será setado com o valor 0, caso contrário será setado
     * como "".
     * @param campo
     * @param campoNumerico 
     */
    public static void limparCamposFormatados(JFormattedTextField campo, boolean campoNumerico){
        String valor = campo.getText();
        valor = valor.replaceAll("[^0-9]", "");
        if(valor.isEmpty()){
            if(campoNumerico) campo.setValue(0);
            else campo.setValue("");
        }
    }
    
    public static void limparCamposFormatados(JFormattedTextField campo){
        String valor = campo.getText();
        valor = valor.replaceAll("[^0-9]", "");
        if(valor.isEmpty()) campo.setValue("");
    }
    
    public static void chamarTela(Window tela){
        tela.setLocationRelativeTo(null);
        tela.setVisible(true);
    }
    
    public static JPopupMenu criarJPopup(){
        JPopupMenu menu = new JPopupMenu();
        JMenuItem abrir = new JMenuItem("Consultar horários disponíveis");
        abrir.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                AgendaTratamentos agenda = new AgendaTratamentos();
                agenda.setLocationRelativeTo(null);
                agenda.setVisible(true);
            }
        });
        
        menu.add(abrir);
        
        return menu;
    }
}
